#pragma once

void eps_q(double eps[3][9], char *gauge_action);
void eps_G(int igamma, double eps[3][9], char *gauge_action);
void eps_d(O55 d[5], char *gauge_action, char *parity, char *plusminus);
double correction_Zq_Oa2g2(double g2, double P2, double P4, double nn, char *gauge_action, char *gauge_fixing)
{
   double CZq;
// gauge dependent parameters
   double llam;
   if (strcmp (gauge_fixing,"landau") == 0) llam=0.0;
   else if (strcmp (gauge_fixing,"feynman") == 0) llam=1.0;
   else printf("ATTENTION: gauge_fixing %s not implemented\n",gauge_fixing);

   double c1,c2;
   if (strcmp (gauge_action,"plaquette") == 0) c1=0.0;
   else if (strcmp (gauge_action,"tlsym") == 0) c1=-0.083333;
   else if (strcmp (gauge_action,"iwasaki") == 0) c1=-0.331;
   else printf("ATTENTION: gauge action %s not implemented\n",gauge_action);
   c2=c1;

   double csw=0;

   double g2tilde = (g2*(4./3.)) / (16.*PI*PI);

   double eps[3][9];

   double c_0, c_1, c_2, c_3;

        /////////////////
        // Zq correction
        /////////////////
        eps_q(eps,gauge_action);

          c_0 = -1./6./nn*P2*(eps[0][1]-4.79200956*llam+eps[0][2]*csw+eps[0][3]*pow(csw,2));
          c_1 = -1./nn*P2*(eps[2][1]+0.507001567*llam+csw*eps[2][2]+eps[2][3]*pow(csw,2)+(101./120.-11./30.*c2)*log(P2));
          c_2 = -P2*(eps[2][4] + (59./240.+c1/2.+c2/60.-1./4.*(3./2.*llam+csw+pow(csw,2)))*log(P2));
          c_3 = -P4/P2*(-3./80.-c2/10.-5./48.*llam);
          CZq = g2tilde*(c_0 + c_1 + c_2 + c_3); // deberia usar c++ donde se pueden para parametros por referencia
                                                    // de momento, no conozco otra forma mas elegante de hacerlo que añadiendo el ultimo puntero
	  return CZq;

}
void  correction_D_Oa2g2( O55 CD, double g2, double P2, double P4, double nn, char *gauge_action, char *gauge_fixing)
{

   double llam;
   if (strcmp (gauge_fixing,"landau") == 0) llam=0.0;
   else if (strcmp (gauge_fixing,"feynman") == 0) llam=1.0;
   else printf("ATTENTION: gauge_fixing %s not implemented\n",gauge_fixing);

   double c1,c2;
   if (strcmp (gauge_action,"plaquette") == 0) c1=0.0;
   else if (strcmp (gauge_action,"tlsym") == 0) c1=-0.083333;
   else if (strcmp (gauge_action,"iwasaki") == 0) c1=-0.331;
   else printf("ATTENTION: gauge action %s not implemented\n",gauge_action);
   c2=c1;

//   double csw=0;

   double g2tilde = (g2) / (16.*PI*PI);

	// Due to the change wilson-> twisted
	// O_1 O_4 O_5 are corrected with PV+ 
	// O_2 and O_3 are corrected with PV-
 
   O55 dPVplus[5];
   O55 dPVminus[5];

   char parity[1024];
   char plusminus[1024];

   sprintf(parity,"PV");

   sprintf(plusminus,"plus");
   eps_d(dPVplus,gauge_action,parity, plusminus);
   sprintf(plusminus,"minus");
   eps_d(dPVminus,gauge_action,parity, plusminus);


  // D=g2tilde*(d0 + d1 a2 p4/p2 + a2 p2 (d2 +  d3 log(p2) ) + d4 log(a2p2))
  // Correction D = g2tilde*(d1 a2 p4/p2 + a2 p2 (d2 +  d3 log(p2) ) )

   for (int iprojector=0; iprojector<5; iprojector++) for (int ioperator=0; ioperator<5; ioperator++) 
   {
	// iprojector= operator
	// ioperator= projector
        // d_ij_PC+ | TM-OS phisical basis=(d11PV+,0..) (0,d22PV-,-d23PV-,0,0) (0,-d23PV-,d33PV-,0,0) (0,0,0,d44PV+ d45PV+) (0,0,0,d45PV+, d55PV+) | Wilson - Tw basis
        CD[iprojector][ioperator]=g2tilde*(dPVplus[1][iprojector][ioperator]*P4/P2 + P2*(dPVplus[2][iprojector][ioperator] + dPVplus[3][iprojector][ioperator]*log(P2)));

   }
  


}
void correction_Oa2g2(double *CZq, double *CLambdaG,double g2, double P2, double P4, double nn, char *gauge_action, char *gauge_fixing, int twisted_basis)
{
// gauge dependent parameters
   double llam;
   if (strcmp (gauge_fixing,"landau") == 0) llam=0.0;
   else if (strcmp (gauge_fixing,"feynman") == 0) llam=1.0;
   else printf("ATTENTION: gauge_fixing %s not implemented\n",gauge_fixing);

   double c1,c2;
   if (strcmp (gauge_action,"plaquette") == 0) c1=0.0;
   else if (strcmp (gauge_action,"tlsym") == 0) c1=-0.083333;
   else if (strcmp (gauge_action,"iwasaki") == 0) c1=-0.331;
   else printf("ATTENTION: gauge action %s not implemented\n",gauge_action);
   c2=c1;

   double csw=0;

   double g2tilde = (g2*(4./3.)) / (16.*PI*PI);

   double eps[3][9];
   
   double c_0, c_1, c_2, c_3;


   	/////////////////
	// Zq correction
	/////////////////
	eps_q(eps,gauge_action);
	
          c_0 = -1./6./nn*P2*(eps[0][1]-4.79200956*llam+eps[0][2]*csw+eps[0][3]*pow(csw,2));
          c_1 = -1./nn*P2*(eps[2][1]+0.507001567*llam+csw*eps[2][2]+eps[2][3]*pow(csw,2)+(101./120.-11./30.*c2)*log(P2));
          c_2 = -P2*(eps[2][4] + (59./240.+c1/2.+c2/60.-1./4.*(3./2.*llam+csw+pow(csw,2)))*log(P2));	
          c_3 = -P4/P2*(-3./80.-c2/10.-5./48.*llam);
          CZq[0] = g2tilde*(c_0 + c_1 + c_2 + c_3); // deberia usar c++ donde se pueden para parametros por referencia
						    // de momento, no conozco otra forma mas elegante de hacerlo que añadiendo el ultimo puntero
	  
         /////////////////
        // ZS correction
        /////////////////
        eps_G(0,eps,gauge_action);
  
          c_1 = eps[2][1]-2.27358943*llam+eps[2][2]*csw+eps[2][3]*pow(csw,2);
          c_2 = -1./4.+3./4.*llam+3./2.*csw;
          c_3 = 13./24.+c2/2.-llam/8.;

         CLambdaG[0]  = g2tilde*(P2*(c_1+c_2*log(P2))+c_3*P4/P2);
	
         /////////////////
        // ZV correction
        /////////////////
        eps_G(1,eps,gauge_action);

          c_1 = 1./4.*(eps[2][1]+llam/8.+eps[2][2]*csw+eps[2][3]*pow(csw,2))+
                 (eps[2][4]-0.8110353*llam+eps[2][5]*csw+eps[2][6]*pow(csw,2))+
                 1./4.*(eps[2][7]+0.2436436*llam+eps[2][8]*csw+eps[2][9]*pow(csw,2));
          c_2 = 1./4.*(-53./120.+11./10.*c2)+
                 (11./240.-c1/2.-c2/60.+llam/8.-5./12.*csw+1./4.*pow(csw,2))+
                 1./4.*(-149./120.-c1-c2/30.+llam/4.+csw/6.+1./2.*pow(csw,2));
          c_3 = (3./80.+c2/10.+5.*llam/48.)+
                 1./4.*(-101./60.+11./15.*c2+llam/3.)+
                 1./4.*(-1./60.+2./5.*c2+llam/12.)+
                 1./4.*(-3./40.-1./5.*c2-5./24*llam);
        
          CLambdaG[1] = g2tilde*(P2*(c_1+c_2*log(P2))+c_3*P4/P2);
	  CLambdaG[1] = CLambdaG[1]/4.;

         /////////////////
        // ZP correction
        /////////////////
        eps_G(2,eps,gauge_action);

          c_1 = eps[2][1]-0.83810121*llam+eps[2][2]*pow(csw,2);
          c_2 = -1./4.+llam/4.;
          c_3 = 13./24.+c2/2.-llam/8.;

          CLambdaG[2] = g2tilde*(P2*(c_1+c_2*log(P2))+c_3*P4/P2);
        
	 /////////////////
        // ZT correction
        /////////////////
        eps_G(3,eps,gauge_action);
          c_1 = 1./4.*(eps[2][1]+llam/4.+eps[2][2]*csw+eps[2][3]*pow(csw,2))-
                  1./4.*(eps[2][4]+0.62097643*llam+eps[2][5]*csw+eps[2][6]*pow(csw,2))+
                  (eps[2][7]-0.7839694*llam+eps[2][8]*csw+eps[2][9]*pow(csw,2))+
                 1./12.*(-7./3.-4./3.*c2-llam/2.);
          c_2 = -1./4.*(2.-llam-csw)+
                   (1./12.-c1+c2/3.-csw/2.);  
          c_3 = -1./4.*(-1./2.+c2+llam/2.)-
                   1./4.*(17./6.+c2/3.)+
                  (-1./3.+c2/2.+llam/3.)-
                 1./12.*(-7./3.-4./3.*c2-llam/2.);

          CLambdaG[3] = g2tilde*(P2*(c_1+c_2*log(P2))+c_3*P4/P2);
          CLambdaG[3] = CLambdaG[3]/6.;
        
	 /////////////////
        // ZA correction
        /////////////////
        eps_G(4,eps,gauge_action);

          c_1 = 1./4.*(eps[2][1]+llam/8.+eps[2][2]*csw+eps[2][3]*pow(csw,2))+
                  (eps[2][4]-1.7465235*llam+eps[2][5]*csw+eps[2][6]*pow(csw,2))+
                 1./4.*(eps[2][7]+1.1146200*llam+eps[2][8]*csw+eps[2][9]*pow(csw,2));
          c_2 = 1./4.*(-53./120.+11./10.*c2)+
                  (-109./240.-c1/2.-c2/60.+5./8.*llam+7./12.*csw-1./4.*pow(csw,2))+
                 1./4.*(91./120.-c1-c2/30.-3./4.*llam-5./6.*csw-1./2.*pow(csw,2));
          c_3 = (3./80.+c2/10.+5./48.*llam)+
                 1./4.*(-101./60.+11./15.*c2+llam/3.)+
                 1./4.*(-1./60.+2./5.*c2+llam/12.)+
                 1./4.*(-3./40.-1./5.*c2-5./24.*llam);

          CLambdaG[4] = g2tilde*(P2*(c_1+c_2*log(P2))+c_3*P4/P2);
          CLambdaG[4] =CLambdaG[4]/4.;

	double aux;
	if (!twisted_basis) {
		// ZA<->ZV
		aux=CLambdaG[4];
		CLambdaG[4]=CLambdaG[1];
		CLambdaG[1]=aux;
	}
	

}
//epsilon values
void eps_q(double eps[3][9], char *gauge_action)
{

	// Initialize to zero
	for (int i=0; i<3; i++) for (int j=0; j<9; j++) eps[i][j]=0.;

        if (strcmp (gauge_action,"plaquette") == 0) 
        {
          eps[0][1] = 16.6444139;
          eps[0][2] = -2.24886853;
          eps[0][3] = -1.39726711;
          eps[2][1] = -4.74536466;
          eps[2][2] = 0.02028705;
          eps[2][3] = 0.10348577;
          eps[2][4] = -1.5048070;
       }
        if (strcmp (gauge_action,"tlsym") == 0)
        {
          eps[0][1] = 13.02327272;
          eps[0][2] = -2.01541404;
          eps[0][3] =  -1.24220271;
          eps[2][1] = -4.2478783;
          eps[2][2] = 0.05136635;
          eps[2][3] = 0.07865292;
          eps[2][4] = -1.14716212;
	}
        if (strcmp (gauge_action,"iwasaki") == 0)
        {
          eps[0][1] = 8.1165665;
          eps[0][2] = -1.60101088;
          eps[0][3] =  -0.97320689;
          eps[2][1] = -3.2018047;
          eps[2][2] = 0.08249970;
          eps[2][3] = 0.04192446;
	  eps[2][4] = -0.62002244;
	}
}

void eps_G(int igamma, double eps[3][9], char *gauge_action)
{
	if (igamma==0)
	{
	////////////
	// SCALAR
	//////////

        // Initialize to zero
        for (int i=0; i<3; i++) for (int j=0; j<9; j++) eps[i][j]=0.;
	
          if (strcmp (gauge_action,"plaquette") == 0){
          eps[2][1] =  2.60041308;
          eps[2][2] = -4.15080331;
          eps[2][3] =  0.17641091;
          }
          if (strcmp (gauge_action,"tlsym") == 0) {
          eps[2][1] =  2.3547298;
          eps[2][2] = -3.85277871;
          eps[2][3] =  0.196461884;
          }
          if (strcmp (gauge_action,"iwasaki") == 0) {
          eps[2][1] =  2.02123300;
          eps[2][2] = -3.23459547;
          eps[2][3] = 0.234502732;
          }
	}

	if(igamma==1)
	{
	//////////////
	// VECTORIAL
	//////////////
       // Initialize to zero
        for (int i=0; i<3; i++) for (int j=0; j<9; j++) eps[i][j]=0.;
          if (strcmp (gauge_action,"plaquette") == 0){
          eps[2][1]  =  1.5541024;
          eps[2][2]  =  0.32907377;
          eps[2][3] = -0.0060202576;
          eps[2][4]  =  0.2500659;
          eps[2][5]  =  0.8859920;
          eps[2][6] = -0.300364436;
          eps[2][7]  =  1.27887765;
          eps[2][8]  =  0.27776135;
          eps[2][9] = -0.35475044;
          }
          if (strcmp (gauge_action,"tlsym") == 0) {
          eps[2][1]  =  1.6762868;
          eps[2][2]  =  0.22601986;
          eps[2][3]  =  0.02822949;
          eps[2][4]  =  0.0214112;
          eps[2][5]  =  0.8342659;
          eps[2][6] = -0.28736163;
          eps[2][7]  =  1.03773908;
          eps[2][8]  =  0.28969451;
          eps[2][9] = -0.302816648;
          }
          if (strcmp (gauge_action,"iwasaki") == 0) {
          eps[2][1] = 1.4573118;
          eps[2][2] = 0.0858961;
          eps[2][3] = 0.07934994;
          eps[2][4] = -0.2668492;
          eps[2][5] = 0.712786719;
          eps[2][6] = -0.25078366;
          eps[2][7] = 0.76263373;
          eps[2][8] = 0.29755270;
          eps[2][9] = -0.184270928;
          }


	}
	
	if (igamma==2)
	{
	////////////////
	// PSEUDOSCALAR
	////////////////
       // Initialize to zero
        for (int i=0; i<3; i++) for (int j=0; j<9; j++) eps[i][j]=0.;

          if (strcmp (gauge_action,"plaquette") == 0){
          eps[2][1] =  0.84419938;
          eps[2][2] = -0.25823485;
          }
          if (strcmp (gauge_action,"tlsym") == 0) {
          eps[2][1] =  0.70640549;
          eps[2][2] = -0.27556247;
          }
          if (strcmp (gauge_action,"iwasaki") == 0) {
          eps[2][1] = 0.6690790;
          eps[2][2] = -0.30221183;
          }

	}

	if (igamma==3)
	{
	/////////////////
	// TENSORIAL
	////////////////
       // Initialize to zero
        for (int i=0; i<3; i++) for (int j=0; j<9; j++) eps[i][j]=0.;
          if (strcmp (gauge_action,"plaquette") == 0){
          eps[2][1]  =  2.3328621;
          eps[2][2] = -1.52209604;
          eps[2][3]  =  0.2368195;
          eps[2][4] = -2.02795509;
          eps[2][5]  =  0.11808647;
          eps[2][6]  =  0.07250824;
          eps[2][7]  =  0.3932905;
          eps[2][8]  =  1.10184617;
          eps[2][9] = -0.02744360;
          }
          if (strcmp (gauge_action,"tlsym") == 0) {
          eps[2][1]  =  2.4912319;
          eps[2][2] = -1.53694399;
          eps[2][3]  =  0.26295051;
          eps[2][4] = -1.55221265;
          eps[2][5]  =  0.04504264;
          eps[2][6]  =  0.07020813;
          eps[2][7]  =  0.1467998;
          eps[2][8]  =  1.03762644;
          eps[2][9] = -0.03500219;
          }
          if (strcmp (gauge_action,"iwasaki") == 0) {
          eps[2][1] = 2.3441345;
          eps[2][2] = -1.4848088;
          eps[2][3]  =  0.30172406;
          eps[2][4] = -0.6509124;
          eps[2][5]  =  -0.11083048;
          eps[2][6]  =  0.06071268;
          eps[2][7]  =  -0.2049940;
          eps[2][8]  =  0.88259379;
          eps[2][9] = -0.04896801;
          }

	}

	if (igamma==4)
	{
	////////////////
	// AXIAL
	///////////////
      // Initialize to zero
        for (int i=0; i<3; i++) for (int j=0; j<9; j++) eps[i][j]=0.;
         if (strcmp (gauge_action,"plaquette") == 0){
          eps[2][1]  =  0.3879068;
          eps[2][2]  =  1.85116980;
          eps[2][3] = -0.093094486;
          eps[2][4]  =  1.6350438;
          eps[2][5] = -1.59945524;
          eps[2][6]  =  0.333900263;
          eps[2][7]  =  0.41758917;
          eps[2][8]  =  0.395847810;
          eps[2][9]  =  0.31972188;
          }
          if (strcmp (gauge_action,"tlsym") == 0) {
          eps[2][1]  =  0.29616583;
          eps[2][2]  =  1.7629637;
          eps[2][3] = -0.11136345;
          eps[2][4]  =  1.3008790;
          eps[2][5] = -1.48761993;
          eps[2][6]  =  0.314172576;
          eps[2][7]  =  0.596637529;
          eps[2][8]  =  0.33473715;
          eps[2][9]  =  0.27870681;
          }
          if (strcmp (gauge_action,"iwasaki") == 0) {
          eps[2][1] = 0.05917686;
          eps[2][2] = 1.5707047;
          eps[2][3] = -0.13932655;
          eps[2][4] = 0.6845753;
          eps[2][5] = -1.24800562;
          eps[2][6]  =  0.26827353;
          eps[2][7]  =  1.05772129;
          eps[2][8]  =  0.18672220;
          eps[2][9]  =  0.17428813;
          }

	}
}	

void eps_d(O55 d[5], char *gauge_action, char *parity, char *plusminus)
{

// WARNING WARNING
// d values valid only for csw=0
// so, be careful if you're using the plaqutte case

if (strcmp (gauge_action,"plaquette") == 0){
if (strcmp (parity, "PV") == 0){
if (strcmp (plusminus, "plus") == 0){

d[0][0][0]=7.33426;
d[1][0][0]=-2.71431;
d[2][0][0]=4.06072;
d[3][0][0]=-(17/12);
d[4][0][0]=2;
d[0][0][1]=0;
d[1][0][1]=0;
d[2][0][1]=0;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=0;
d[1][0][2]=0;
d[2][0][2]=0;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=0;
d[1][0][3]=0;
d[2][0][3]=0;
d[3][0][3]=0;
d[4][0][3]=0;
d[0][0][4]=0;
d[1][0][4]=0;
d[2][0][4]=0;
d[3][0][4]=0;
d[4][0][4]=0;
d[0][1][0]=0;
d[1][1][0]=0;
d[2][1][0]=0;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=2.18261;
d[1][1][1]=-0.81486;
d[2][1][1]=2.44131;
d[3][1][1]=-(19/24);
d[4][1][1]=0;
d[0][1][2]=16*-0.0745717;
d[1][1][2]=0.876669;
d[2][1][2]=-1.76504;
d[3][1][2]=3/8;
d[4][1][2]=0;
d[0][1][3]=0;
d[1][1][3]=0;
d[2][1][3]=0;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=0;
d[1][1][4]=0;
d[2][1][4]=0;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=0;
d[1][2][0]=0;
d[2][2][0]=0;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=-11.9064;
d[1][2][1]=1.61084;
d[2][2][1]=-7.71004;
d[3][2][1]=5/4;
d[4][2][1]=6;
d[0][2][2]=12.8833;
d[1][2][2]=2.02889;
d[2][2][2]=3.41614;
d[3][2][2]=-(5/12);
d[4][2][2]=-8;
d[0][2][3]=0;
d[1][2][3]=0;
d[2][2][3]=0;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=0;
d[1][2][4]=0;
d[2][2][4]=0;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=0;
d[1][3][0]=0;
d[2][3][0]=0;
d[3][3][0]=0;
d[4][3][0]=0;
d[0][3][1]=0;
d[1][3][1]=0;
d[2][3][1]=0;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=0;
d[1][3][2]=0;
d[2][3][2]=0;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=11.089;
d[1][3][3]=2.08504;
d[2][3][3]=-0.0256116;
d[3][3][3]=-(1/24);
d[4][3][3]=-5;
d[0][3][4]=10.5128;
d[1][3][4]=-1.00768;
d[2][3][4]=5.3861;
d[3][3][4]=-(7/8);
d[4][3][4]=-5;
d[0][4][0]=0;
d[1][4][0]=0;
d[2][4][0]=0;
d[3][4][0]=0;
d[4][4][0]=0;
d[0][4][1]=0;
d[1][4][1]=0;
d[2][4][1]=0;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=1.12635;
d[1][4][3]=-0.967838;
d[2][4][3]=1.57874;
d[3][4][3]=-(3/8);
d[4][4][3]=1/3;
d[0][4][4]=1.45206;
d[1][4][4]=-3.01036;
d[2][4][4]=2.04873;
d[3][4][4]=-(29/24);
d[4][4][4]=17/3;
}
if (strcmp (plusminus, "minus") == 0){
d[0][0][0]=-2.1675;
d[1][0][0]=2.17862;
d[2][0][0]=3.05752;
d[3][0][0]=-(1/6);
d[4][0][0]=-4;
d[0][0][1]=0;
d[1][0][1]=0;
d[2][0][1]=0;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=0;
d[1][0][2]=0;
d[2][0][2]=0;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=0;
d[1][0][3]=0;
d[2][0][3]=0;
d[3][0][3]=0;
d[4][0][3]=0;
d[0][0][4]=0;
d[1][0][4]=0;
d[2][0][4]=0;
d[3][0][4]=0;
d[4][0][4]=0;
d[0][1][0]=0;
d[1][1][0]=0;
d[2][1][0]=0;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=2.18261;
d[1][1][1]=-0.81486;
d[2][1][1]=2.44131;
d[3][1][1]=-(19/24);
d[4][1][1]=0;
d[0][1][2]=16*0.0745717;
d[1][1][2]=-0.876669;
d[2][1][2]=1.76504;
d[3][1][2]=-(3/8);
d[4][1][2]=0;
d[0][1][3]=0;
d[1][1][3]=0;
d[2][1][3]=0;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=0;
d[1][1][4]=0;
d[2][1][4]=0;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=0;
d[1][2][0]=0;
d[2][2][0]=0;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=11.9064;
d[1][2][1]=-1.61084;
d[2][2][1]=7.71004;
d[3][2][1]=-(5/4);
d[4][2][1]=-6;
d[0][2][2]=12.8833;
d[1][2][2]=2.02889;
d[2][2][2]=3.41614;
d[3][2][2]=-(5/12);
d[4][2][2]=-8;
d[0][2][3]=0;
d[1][2][3]=0;
d[2][2][3]=0;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=0;
d[1][2][4]=0;
d[2][2][4]=0;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=0;
d[1][3][0]=0;
d[2][3][0]=0;
d[3][3][0]=0;
d[4][3][0]=0;
d[0][3][1]=0;
d[1][3][1]=0;
d[2][3][1]=0;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=0;
d[1][3][2]=0;
d[2][3][2]=0;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=14.6776;
d[1][3][3]=1.97274;
d[2][3][3]=6.85789;
d[3][3][3]=-(19/24);
d[4][3][3]=-11;
d[0][3][4]=-9.7113;
d[1][3][4]=2.10171;
d[2][3][4]=-3.15048;
d[3][3][4]=7/8;
d[4][3][4]=0;
d[0][4][0]=0;
d[1][4][0]=0;
d[2][4][0]=0;
d[3][4][0]=0;
d[4][4][0]=0;
d[0][4][1]=0;
d[1][4][1]=0;
d[2][4][1]=0;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=-0.859176;
d[1][4][3]=1.33251;
d[2][4][3]=-0.833534;
d[3][4][3]=3/8;
d[4][4][3]=-(5/3);
d[0][4][4]=-3.68625;
d[1][4][4]=0.214158;
d[2][4][4]=3.67443;
d[3][4][4]=-(5/8);
d[4][4][4]=-(1/3);
}
}
if (strcmp (parity, "PC") == 0){
if (strcmp (plusminus, "plus") == 0){

d[0][0][0]=7.33426;
d[1][0][0]=-2.71431;
d[2][0][0]=4.06072;
d[3][0][0]=-(17/12);
d[4][0][0]=2;
d[0][0][1]=16*0.401793;
d[1][0][1]=0;
d[2][0][1]=16*-0.0731756;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=16*-0.0502241;
d[1][0][2]=0;
d[2][0][2]=16*0.00914695;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=16*-0.0502241;
d[1][0][3]=0;
d[2][0][3]=0.468247;
d[3][0][3]=-(1/4);
d[4][0][3]=0;
d[0][0][4]=16*-0.150672;
d[1][0][4]=0;
d[2][0][4]=1.40474;
d[3][0][4]=-(3/4);
d[4][0][4]=0;
d[0][1][0]=16*0.552465;
d[1][1][0]=0;
d[2][1][0]=16*-0.100616;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=4.59337;
d[1][1][1]=-0.81486;
d[2][1][1]=1.03657;
d[3][1][1]=-(1/24);
d[4][1][1]=0;
d[0][1][2]=16*-0.0494596;
d[1][1][2]=0.876669;
d[2][1][2]=-1.99916;
d[3][1][2]=1/2;
d[4][1][2]=0;
d[0][1][3]=16*0.0251121;
d[1][1][3]=0;
d[2][1][3]=16*-0.00457347;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=16*-0.0753362;
d[1][1][4]=0;
d[2][1][4]=16*0.0137204;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=16*0.100448;
d[1][2][0]=0;
d[2][2][0]=16*-0.0182939;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=-10.2992;
d[1][2][1]=1.61084;
d[2][2][1]=-8.64653;
d[3][2][1]=7/4;
d[4][2][1]=6;
d[0][2][2]=15.294;
d[1][2][2]=2.02889;
d[2][2][2]=2.0114;
d[3][2][2]=1/3;
d[4][2][2]=-8;
d[0][2][3]=16*-0.652914;
d[1][2][3]=0;
d[2][2][3]=16*0.11891;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=16*-0.452017;
d[1][2][4]=0;
d[2][2][4]=16*0.0823225;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=16*-0.200896;
d[1][3][0]=0;
d[2][3][0]=1.87299;
d[3][3][0]=-1;
d[4][3][0]=0;
d[0][3][1]=16*0.703138;
d[1][3][1]=0;
d[2][3][1]=16*-0.128057;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=16*-0.803586;
d[1][3][2]=0;
d[2][3][2]=16*0.146351;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=11.089;
d[1][3][3]=2.08504;
d[2][3][3]=-0.0256116;
d[3][3][3]=-(1/24);
d[4][3][3]=-5;
d[0][3][4]=10.5128;
d[1][3][4]=-1.00768;
d[2][3][4]=5.3861;
d[3][3][4]=-(7/8);
d[4][3][4]=-5;
d[0][4][0]=16*-0.200896;
d[1][4][0]=0;
d[2][4][0]=1.87299;
d[3][4][0]=-1;
d[4][4][0]=0;
d[0][4][1]=16*-0.100448;
d[1][4][1]=0;
d[2][4][1]=16*0.0182939;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=1.12635;
d[1][4][3]=-0.967838;
d[2][4][3]=1.57874;
d[3][4][3]=-(3/8);
d[4][4][3]=1/3;
d[0][4][4]=1.45206;
d[1][4][4]=-3.01036;
d[2][4][4]=2.04873;
d[3][4][4]=-(29/24);
d[4][4][4]=17/3;
}
if (strcmp (plusminus, "minus") == 0){

d[0][0][0]=-2.1675;
d[1][0][0]=2.17862;
d[2][0][0]=3.05752;
d[3][0][0]=-(1/6);
d[4][0][0]=-4;
d[0][0][1]=16*0.401793;
d[1][0][1]=0;
d[2][0][1]=16*-0.0731756;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=16*0.100448;
d[1][0][2]=0;
d[2][0][2]=16*-0.0182939;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=16*0.100448;
d[1][0][3]=0;
d[2][0][3]=-0.936493;
d[3][0][3]=1/2;
d[4][0][3]=0;
d[0][0][4]=16*0.301345;
d[1][0][4]=0;
d[2][0][4]=-2.80948;
d[3][0][4]=3/2;
d[4][0][4]=0;
d[0][1][0]=16*0.251121;
d[1][1][0]=0;
d[2][1][0]=16*-0.0457347;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=-0.228145;
d[1][1][1]=-0.81486;
d[2][1][1]=3.84605;
d[3][1][1]=-(37/24);
d[4][1][1]=0;
d[0][1][2]=16*0.0996838;
d[1][1][2]=-0.876669;
d[2][1][2]=1.53092;
d[3][1][2]=-(1/4);
d[4][1][2]=0;
d[0][1][3]=16*0.0251121;
d[1][1][3]=0;
d[2][1][3]=16*-0.00457347;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=16*-0.0753362;
d[1][1][4]=0;
d[2][1][4]=16*0.0137204;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=16*0.100448;
d[1][2][0]=0;
d[2][2][0]=16*-0.0182939;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=13.5135;
d[1][2][1]=-1.61084;
d[2][2][1]=6.77355;
d[3][2][1]=-(3/4);
d[4][2][1]=-6;
d[0][2][2]=10.4725;
d[1][2][2]=2.02889;
d[2][2][2]=4.82088;
d[3][2][2]=-(7/6);
d[4][2][2]=-8;
d[0][2][3]=16*-0.954258;
d[1][2][3]=0;
d[2][2][3]=16*0.173792;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=16*0.452017;
d[1][2][4]=0;
d[2][2][4]=16*-0.0823225;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=16*0.401793;
d[1][3][0]=0;
d[2][3][0]=-3.74597;
d[3][3][0]=2;
d[4][3][0]=0;
d[0][3][1]=16*-0.502241;
d[1][3][1]=0;
d[2][3][1]=16*0.0914695;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=16*-0.803586;
d[1][3][2]=0;
d[2][3][2]=16*0.146351;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=14.6776;
d[1][3][3]=1.97274;
d[2][3][3]=6.85789;
d[3][3][3]=-(19/24);
d[4][3][3]=-11;
d[0][3][4]=-9.7113;
d[1][3][4]=2.10171;
d[2][3][4]=-3.15048;
d[3][3][4]=7/8;
d[4][3][4]=0;
d[0][4][0]=16*0.401793;
d[1][4][0]=0;
d[2][4][0]=-3.74597;
d[3][4][0]=2;
d[4][4][0]=0;
d[0][4][1]=16*-0.100448;
d[1][4][1]=0;
d[2][4][1]=16*0.0182939;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=-0.859176;
d[1][4][3]=1.33251;
d[2][4][3]=-0.833534;
d[3][4][3]=3/8;
d[4][4][3]=-(5/3);
d[0][4][4]=-3.68625;
d[1][4][4]=0.214158;
d[2][4][4]=3.67443;
d[3][4][4]=-(5/8);
d[4][4][4]=-(1/3);
}
}
}
if (strcmp (gauge_action,"tlsym") == 0){
if (strcmp (parity, "PV") == 0){
if (strcmp (plusminus, "plus") == 0){

d[0][0][0]=7.60719;
d[1][0][0]=-2.79899;
d[2][0][0]=2.64223;
d[3][0][0]=-(19./18);
d[4][0][0]=2;
d[0][0][1]=0;
d[1][0][1]=0;
d[2][0][1]=0;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=0;
d[1][0][2]=0;
d[2][0][2]=0;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=0;
d[1][0][3]=0;
d[2][0][3]=0;
d[3][0][3]=0;
d[4][0][3]=0;
d[0][0][4]=0;
d[1][0][4]=0;
d[2][0][4]=0;
d[3][0][4]=0;
d[4][0][4]=0;
d[0][1][0]=0;
d[1][1][0]=0;
d[2][1][0]=0;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=2.29952;
d[1][1][1]=-0.873614;
d[2][1][1]=1.84679;
d[3][1][1]=-(25./36);
d[4][1][1]=0;
d[0][1][2]=16*-0.0745717;
d[1][1][2]=0.892704;
d[2][1][2]=-1.46854;
d[3][1][2]=1./3;
d[4][1][2]=0;
d[0][1][3]=0;
d[1][1][3]=0;
d[2][1][3]=0;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=0;
d[1][1][4]=0;
d[2][1][4]=0;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=0;
d[1][2][0]=0;
d[2][2][0]=0;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=-10.9702;
d[1][2][1]=1.70276;
d[2][2][1]=-6.71131;
d[3][2][1]=7./6;
d[4][2][1]=6;
d[0][2][2]=11.596;
d[1][2][2]=1.92847;
d[2][2][2]=3.1025;
d[3][2][2]=-(4./9);
d[4][2][2]=-8;
d[0][2][3]=0;
d[1][2][3]=0;
d[2][2][3]=0;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=0;
d[1][2][4]=0;
d[2][2][4]=0;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=0;
d[1][3][0]=0;
d[2][3][0]=0;
d[3][3][0]=0;
d[4][3][0]=0;
d[0][3][1]=0;
d[1][3][1]=0;
d[2][3][1]=0;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=0;
d[1][3][2]=0;
d[2][3][2]=0;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=10.2697;
d[1][3][3]=2.01567;
d[2][3][3]=-0.286209;
d[3][3][3]=1./18;
d[4][3][3]=-5;
d[0][3][4]=9.73271;
d[1][3][4]=-1.07855;
d[2][3][4]=4.60271;
d[3][3][4]=-(7./9);
d[4][3][4]=-5;
d[0][4][0]=0;
d[1][4][0]=0;
d[2][4][0]=0;
d[3][4][0]=0;
d[4][4][0]=0;
d[0][4][1]=0;
d[1][4][1]=0;
d[2][4][1]=0;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=1.17836;
d[1][4][3]=-0.982203;
d[2][4][3]=1.25519;
d[3][4][3]=-(17./54);
d[4][4][3]=1./3;
d[0][4][4]=2.29708;
d[1][4][4]=-3.06216;
d[2][4][4]=0.828945;
d[3][4][4]=-(23./27);
d[4][4][4]=17./3;
}
if (strcmp (plusminus, "minus") == 0){

d[0][0][0]=-2.83072;
d[1][0][0]=2.12576;
d[2][0][0]=3.61158;
d[3][0][0]=-(5./9);
d[4][0][0]=-4;
d[0][0][1]=0;
d[1][0][1]=0;
d[2][0][1]=0;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=0;
d[1][0][2]=0;
d[2][0][2]=0;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=0;
d[1][0][3]=0;
d[2][0][3]=0;
d[3][0][3]=0;
d[4][0][3]=0;
d[0][0][4]=0;
d[1][0][4]=0;
d[2][0][4]=0;
d[3][0][4]=0;
d[4][0][4]=0;
d[0][1][0]=0;
d[1][1][0]=0;
d[2][1][0]=0;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=2.29952;
d[1][1][1]=-0.873614;
d[2][1][1]=1.84679;
d[3][1][1]=-(25./36);
d[4][1][1]=0;
d[0][1][2]=16*0.0745717;
d[1][1][2]=-0.892704;
d[2][1][2]=1.46854;
d[3][1][2]=-(1./3);
d[4][1][2]=0;
d[0][1][3]=0;
d[1][1][3]=0;
d[2][1][3]=0;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=0;
d[1][1][4]=0;
d[2][1][4]=0;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=0;
d[1][2][0]=0;
d[2][2][0]=0;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=10.9702;
d[1][2][1]=-1.70276;
d[2][2][1]=6.71131;
d[3][2][1]=-(7./6);
d[4][2][1]=-6;
d[0][2][2]=11.596;
d[1][2][2]=1.92847;
d[2][2][2]=3.1025;
d[3][2][2]=-(4./9);
d[4][2][2]=-8;
d[0][2][3]=0;
d[1][2][3]=0;
d[2][2][3]=0;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=0;
d[1][2][4]=0;
d[2][2][4]=0;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=0;
d[1][3][0]=0;
d[2][3][0]=0;
d[3][3][0]=0;
d[4][3][0]=0;
d[0][3][1]=0;
d[1][3][1]=0;
d[2][3][1]=0;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=0;
d[1][3][2]=0;
d[2][3][2]=0;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=12.9222;
d[1][3][3]=1.84126;
d[2][3][3]=6.49121;
d[3][3][3]=-(17./18);
d[4][3][3]=-11;
d[0][3][4]=-9.55527;
d[1][3][4]=2.15255;
d[2][3][4]=-2.04249;
d[3][3][4]=5./9;
d[4][3][4]=0;
d[0][4][0]=0;
d[1][4][0]=0;
d[2][4][0]=0;
d[3][4][0]=0;
d[4][4][0]=0;
d[0][4][1]=0;
d[1][4][1]=0;
d[2][4][1]=0;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=-1.11922;
d[1][4][3]=1.3402;
d[2][4][3]=-0.401784;
d[3][4][3]=13./54;
d[4][4][3]=-(5./3);
d[0][4][4]=-3.77738;
d[1][4][4]=0.162872;
d[2][4][4]=3.73432;
d[3][4][4]=-(23./27);
d[4][4][4]=-(1./3);
}
}
if (strcmp (parity, "PC") == 0){
if (strcmp (plusminus, "plus") == 0){

d[0][0][0]=7.60719;
d[1][0][0]=-2.79899;
d[2][0][0]=2.64223;
d[3][0][0]=-(19./18);
d[4][0][0]=2;
d[0][0][1]=16*0.338609;
d[1][0][1]=0;
d[2][0][1]=16*-0.0686801;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=16*-0.0423262;
d[1][0][2]=0;
d[2][0][2]=16*0.00858502;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=16*-0.0423262;
d[1][0][3]=0;
d[2][0][3]=0.352458;
d[3][0][3]=-(1./4);
d[4][0][3]=0;
d[0][0][4]=16*-0.126979;
d[1][0][4]=0;
d[2][0][4]=1.05738;
d[3][0][4]=-(3./4);
d[4][0][4]=0;
d[0][1][0]=16*0.465588;
d[1][1][0]=0;
d[2][1][0]=16*-0.0944352;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=4.33117;
d[1][1][1]=-0.873614;
d[2][1][1]=0.789419;
d[3][1][1]=1./18;
d[4][1][1]=0;
d[0][1][2]=16*-0.0534086;
d[1][1][2]=0.892704;
d[2][1][2]=-1.64477;
d[3][1][2]=11./24;
d[4][1][2]=0;
d[0][1][3]=16*0.0211631;
d[1][1][3]=0;
d[2][1][3]=16*-0.00429251;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=16*-0.0634893;
d[1][1][4]=0;
d[2][1][4]=16*0.0128775;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=16*0.0846523;
d[1][2][0]=0;
d[2][2][0]=16*-0.01717;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=-9.61578;
d[1][2][1]=1.70276;
d[2][2][1]=-7.41622;
d[3][2][1]=5./3;
d[4][2][1]=6;
d[0][2][2]=13.6276;
d[1][2][2]=1.92847;
d[2][2][2]=2.04512;
d[3][2][2]=11./36;
d[4][2][2]=-8;
d[0][2][3]=16*-0.55024;
d[1][2][3]=0;
d[2][2][3]=16*0.111605;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=16*-0.380936;
d[1][2][4]=0;
d[2][2][4]=16*0.0772652;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=16*-0.169305;
d[1][3][0]=0;
d[2][3][0]=1.40983;
d[3][3][0]=-1;
d[4][3][0]=0;
d[0][3][1]=16*0.592566;
d[1][3][1]=0;
d[2][3][1]=16*-0.12019;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=16*-0.677219;
d[1][3][2]=0;
d[2][3][2]=16*0.13736;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=10.2697;
d[1][3][3]=2.01567;
d[2][3][3]=-0.286209;
d[3][3][3]=1./18;
d[4][3][3]=-5;
d[0][3][4]=9.73271;
d[1][3][4]=-1.07855;
d[2][3][4]=4.60271;
d[3][3][4]=-(7./9);
d[4][3][4]=-5;
d[0][4][0]=16*-0.169305;
d[1][4][0]=0;
d[2][4][0]=1.40983;
d[3][4][0]=-1;
d[4][4][0]=0;
d[0][4][1]=16*-0.0846523;
d[1][4][1]=0;
d[2][4][1]=16*0.01717;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=1.17836;
d[1][4][3]=-0.982203;
d[2][4][3]=1.25519;
d[3][4][3]=-(17./54);
d[4][4][3]=1./3;
d[0][4][4]=2.29708;
d[1][4][4]=-3.06216;
d[2][4][4]=0.828945;
d[3][4][4]=-(23./27);
d[4][4][4]=17./3;
}
if (strcmp (plusminus, "minus") == 0){

d[0][0][0]=-2.83072;
d[1][0][0]=2.12576;
d[2][0][0]=3.61158;
d[3][0][0]=-(5./9);
d[4][0][0]=-4;
d[0][0][1]=16*0.338609;
d[1][0][1]=0;
d[2][0][1]=16*-0.0686801;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=16*0.0846523;
d[1][0][2]=0;
d[2][0][2]=16*-0.01717;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=16*0.0846523;
d[1][0][3]=0;
d[2][0][3]=-0.704917;
d[3][0][3]=1./2;
d[4][0][3]=0;
d[0][0][4]=16*0.253957;
d[1][0][4]=0;
d[2][0][4]=-2.11475;
d[3][0][4]=3./2;
d[4][0][4]=0;
d[0][1][0]=16*0.211631;
d[1][1][0]=0;
d[2][1][0]=16*-0.0429251;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=0.267862;
d[1][1][1]=-0.873614;
d[2][1][1]=2.90417;
d[3][1][1]=-(13./9);
d[4][1][1]=0;
d[0][1][2]=16*0.0957348;
d[1][1][2]=-0.892704;
d[2][1][2]=1.29231;
d[3][1][2]=-(5./24);
d[4][1][2]=0;
d[0][1][3]=16*0.0211631;
d[1][1][3]=0;
d[2][1][3]=16*-0.00429251;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=16*-0.0634893;
d[1][1][4]=0;
d[2][1][4]=16*0.0128775;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=16*0.0846523;
d[1][2][0]=0;
d[2][2][0]=16*-0.01717;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=12.3247;
d[1][2][1]=-1.70276;
d[2][2][1]=6.00639;
d[3][2][1]=-(2./3);
d[4][2][1]=-6;
d[0][2][2]=9.5643;
d[1][2][2]=1.92847;
d[2][2][2]=4.15987;
d[3][2][2]=-(43./36);
d[4][2][2]=-8;
d[0][2][3]=16*-0.804197;
d[1][2][3]=0;
d[2][2][3]=16*0.163115;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=16*0.380936;
d[1][2][4]=0;
d[2][2][4]=16*-0.0772652;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=16*0.338609;
d[1][3][0]=0;
d[2][3][0]=-2.81967;
d[3][3][0]=2;
d[4][3][0]=0;
d[0][3][1]=16*-0.423262;
d[1][3][1]=0;
d[2][3][1]=16*0.0858502;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=16*-0.677219;
d[1][3][2]=0;
d[2][3][2]=16*0.13736;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=12.9222;
d[1][3][3]=1.84126;
d[2][3][3]=6.49121;
d[3][3][3]=-(17./18);
d[4][3][3]=-11;
d[0][3][4]=-9.55527;
d[1][3][4]=2.15255;
d[2][3][4]=-2.04249;
d[3][3][4]=5./9;
d[4][3][4]=0;
d[0][4][0]=16*0.338609;
d[1][4][0]=0;
d[2][4][0]=-2.81967;
d[3][4][0]=2;
d[4][4][0]=0;
d[0][4][1]=16*-0.0846523;
d[1][4][1]=0;
d[2][4][1]=16*0.01717;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=-1.11922;
d[1][4][3]=1.3402;
d[2][4][3]=-0.401784;
d[3][4][3]=13./54;
d[4][4][3]=-(5./3);
d[0][4][4]=-3.77738;
d[1][4][4]=0.162872;
d[2][4][4]=3.73432;
d[3][4][4]=-(23./27);
d[4][4][4]=-(1./3);
}
}
}
if (strcmp (gauge_action,"iwasaki") == 0){
if (strcmp (parity, "PV") == 0){
if (strcmp (plusminus, "plus") == 0){

d[0][0][0]=8.20961;
d[1][0][0]=-3.05067;
d[2][0][0]=0.364798;
d[3][0][0]=0.0176667;
d[4][0][0]=2;
d[0][0][1]=0;
d[1][0][1]=0;
d[2][0][1]=0;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=0;
d[1][0][2]=0;
d[2][0][2]=0;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=0;
d[1][0][3]=0;
d[2][0][3]=0;
d[3][0][3]=0;
d[4][0][3]=0;
d[0][0][4]=0;
d[1][0][4]=0;
d[2][0][4]=0;
d[3][0][4]=0;
d[4][0][4]=0;
d[0][1][0]=0;
d[1][1][0]=0;
d[2][1][0]=0;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=2.5755;
d[1][1][1]=-1.04823;
d[2][1][1]=0.765001;
d[3][1][1]=-0.4055;
d[4][1][1]=0;
d[0][1][2]=16*-0.0745717;
d[1][1][2]=0.94036;
d[2][1][2]=-0.996594;
d[3][1][2]=0.2095;
d[4][1][2]=0;
d[0][1][3]=0;
d[1][1][3]=0;
d[2][1][3]=0;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=0;
d[1][1][4]=0;
d[2][1][4]=0;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=0;
d[1][2][0]=0;
d[2][2][0]=0;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=-9.01156;
d[1][2][1]=1.97594;
d[2][2][1]=-5.42558;
d[3][2][1]=0.919;
d[4][2][1]=6;
d[0][2][2]=8.93395;
d[1][2][2]=1.63002;
d[2][2][2]=2.92381;
d[3][2][2]=-0.527;
d[4][2][2]=-8;
d[0][2][3]=0;
d[1][2][3]=0;
d[2][2][3]=0;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=0;
d[1][2][4]=0;
d[2][2][4]=0;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=0;
d[1][3][0]=0;
d[2][3][0]=0;
d[3][3][0]=0;
d[4][3][0]=0;
d[0][3][1]=0;
d[1][3][1]=0;
d[2][3][1]=0;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=0;
d[1][3][2]=0;
d[2][3][2]=0;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=8.58706;
d[1][3][3]=1.80953;
d[2][3][3]=-0.407534;
d[3][3][3]=0.3445;
d[4][3][3]=-5;
d[0][3][4]=8.10049;
d[1][3][4]=-1.2892;
d[2][3][4]=3.65074;
d[3][3][4]=-0.488833;
d[4][3][4]=-5;
d[0][4][0]=0;
d[1][4][0]=0;
d[2][4][0]=0;
d[3][4][0]=0;
d[4][4][0]=0;
d[0][4][1]=0;
d[1][4][1]=0;
d[2][4][1]=0;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=1.28718;
d[1][4][3]=-1.0249;
d[2][4][3]=0.737178;
d[3][4][3]=-0.135944;
d[4][4][3]=1./3;
d[0][4][4]=4.09646;
d[1][4][4]=-3.2161;
d[2][4][4]=-1.33185;
d[3][4][4]=0.207611;
d[4][4][4]=17./3;
}
if (strcmp (plusminus, "minus") == 0){

d[0][0][0]=-4.18695;
d[1][0][0]=1.96867;
d[2][0][0]=4.2782;
d[3][0][0]=-1.71133;
d[4][0][0]=-4;
d[0][0][1]=0;
d[1][0][1]=0;
d[2][0][1]=0;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=0;
d[1][0][2]=0;
d[2][0][2]=0;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=0;
d[1][0][3]=0;
d[2][0][3]=0;
d[3][0][3]=0;
d[4][0][3]=0;
d[0][0][4]=0;
d[1][0][4]=0;
d[2][0][4]=0;
d[3][0][4]=0;
d[4][0][4]=0;
d[0][1][0]=0;
d[1][1][0]=0;
d[2][1][0]=0;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=2.5755;
d[1][1][1]=-1.04823;
d[2][1][1]=0.765001;
d[3][1][1]=-0.4055;
d[4][1][1]=0;
d[0][1][2]=16*0.0745717;
d[1][1][2]=-0.94036;
d[2][1][2]=0.996594;
d[3][1][2]=-0.2095;
d[4][1][2]=0;
d[0][1][3]=0;
d[1][1][3]=0;
d[2][1][3]=0;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=0;
d[1][1][4]=0;
d[2][1][4]=0;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=0;
d[1][2][0]=0;
d[2][2][0]=0;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=9.01156;
d[1][2][1]=-1.97594;
d[2][2][1]=5.42558;
d[3][2][1]=-0.919;
d[4][2][1]=-6;
d[0][2][2]=8.93395;
d[1][2][2]=1.63002;
d[2][2][2]=2.92381;
d[3][2][2]=-0.527;
d[4][2][2]=-8;
d[0][2][3]=0;
d[1][2][3]=0;
d[2][2][3]=0;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=0;
d[1][2][4]=0;
d[2][2][4]=0;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=0;
d[1][3][0]=0;
d[2][3][0]=0;
d[3][3][0]=0;
d[4][3][0]=0;
d[0][3][1]=0;
d[1][3][1]=0;
d[2][3][1]=0;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=0;
d[1][3][2]=0;
d[2][3][2]=0;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=9.28085;
d[1][3][3]=1.45051;
d[2][3][3]=6.25515;
d[3][3][3]=-1.3985;
d[4][3][3]=-11;
d[0][3][4]=-9.22883;
d[1][3][4]=2.30366;
d[2][3][4]=-0.537744;
d[3][3][4]=-0.393833;
d[4][3][4]=0;
d[0][4][0]=0;
d[1][4][0]=0;
d[2][4][0]=0;
d[3][4][0]=0;
d[4][4][0]=0;
d[0][4][1]=0;
d[1][4][1]=0;
d[2][4][1]=0;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=-1.66329;
d[1][4][3]=1.36305;
d[2][4][3]=0.300486;
d[3][4][3]=-0.158278;
d[4][4][3]=-(5./3);
d[0][4][4]=-3.93665;
d[1][4][4]=0.010451;
d[2][4][4]=3.49798;
d[3][4][4]=-1.52606;
d[4][4][4]=-(1./3);
}
}
if (strcmp (parity, "PC") == 0){
if (strcmp (plusminus, "plus") == 0){

d[0][0][0]=8.20961;
d[1][0][0]=-3.05067;
d[2][0][0]=0.364798;
d[3][0][0]=0.0176667;
d[4][0][0]=2;
d[0][0][1]=16*0.2423;
d[1][0][1]=0;
d[2][0][1]=16*-0.0563052;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=16*-0.0302874;
d[1][0][2]=0;
d[2][0][2]=16*0.00703815;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=16*-0.0302874;
d[1][0][3]=0;
d[2][0][3]=0.157785;
d[3][0][3]=-(1./4);
d[4][0][3]=0;
d[0][0][4]=16*-0.0908623;
d[1][0][4]=0;
d[2][0][4]=0.473356;
d[3][0][4]=-(3./4);
d[4][0][4]=0;
d[0][1][0]=16*0.333162;
d[1][1][0]=0;
d[2][1][0]=16*-0.0774196;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=4.0293;
d[1][1][1]=-1.04823;
d[2][1][1]=0.291646;
d[3][1][1]=0.3445;
d[4][1][1]=0;
d[0][1][2]=16*-0.059428;
d[1][1][2]=0.94036;
d[2][1][2]=-1.07549;
d[3][1][2]=0.3345;
d[4][1][2]=0;
d[0][1][3]=16*0.0151437;
d[1][1][3]=0;
d[2][1][3]=16*-0.00351907;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=16*-0.0454312;
d[1][1][4]=0;
d[2][1][4]=16*0.0105572;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=16*0.0605749;
d[1][2][0]=0;
d[2][2][0]=16*-0.0140763;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=-8.04236;
d[1][2][1]=1.97594;
d[2][2][1]=-5.74115;
d[3][2][1]=1.419;
d[4][2][1]=6;
d[0][2][2]=10.3877;
d[1][2][2]=1.63002;
d[2][2][2]=2.45045;
d[3][2][2]=0.223;
d[4][2][2]=-8;
d[0][2][3]=16*-0.393737;
d[1][2][3]=0;
d[2][2][3]=16*0.0914959;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=16*-0.272587;
d[1][2][4]=0;
d[2][2][4]=16*0.0633433;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=16*-0.12115;
d[1][3][0]=0;
d[2][3][0]=0.631141;
d[3][3][0]=-1;
d[4][3][0]=0;
d[0][3][1]=16*0.424024;
d[1][3][1]=0;
d[2][3][1]=16*-0.0985341;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=16*-0.484599;
d[1][3][2]=0;
d[2][3][2]=16*0.11261;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=8.58706;
d[1][3][3]=1.80953;
d[2][3][3]=-0.407534;
d[3][3][3]=0.3445;
d[4][3][3]=-5;
d[0][3][4]=8.10049;
d[1][3][4]=-1.2892;
d[2][3][4]=3.65074;
d[3][3][4]=-0.488833;
d[4][3][4]=-5;
d[0][4][0]=16*-0.12115;
d[1][4][0]=0;
d[2][4][0]=0.631141;
d[3][4][0]=-1;
d[4][4][0]=0;
d[0][4][1]=16*-0.0605749;
d[1][4][1]=0;
d[2][4][1]=16*0.0140763;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=1.28718;
d[1][4][3]=-1.0249;
d[2][4][3]=0.737178;
d[3][4][3]=-0.135944;
d[4][4][3]=1./3;
d[0][4][4]=4.09646;
d[1][4][4]=-3.2161;
d[2][4][4]=-1.33185;
d[3][4][4]=0.207611;
d[4][4][4]=17./3;
}
if (strcmp (plusminus, "minus") == 0){

d[0][0][0]=-4.18695;
d[1][0][0]=1.96867;
d[2][0][0]=4.2782;
d[3][0][0]=-1.71133;
d[4][0][0]=-4;
d[0][0][1]=16*0.2423;
d[1][0][1]=0;
d[2][0][1]=16*-0.0563052;
d[3][0][1]=0;
d[4][0][1]=0;
d[0][0][2]=16*0.0605749;
d[1][0][2]=0;
d[2][0][2]=16*-0.0140763;
d[3][0][2]=0;
d[4][0][2]=0;
d[0][0][3]=16*0.0605749;
d[1][0][3]=0;
d[2][0][3]=-0.31557;
d[3][0][3]=1./2;
d[4][0][3]=0;
d[0][0][4]=16*0.181725;
d[1][0][4]=0;
d[2][0][4]=-0.946711;
d[3][0][4]=3./2;
d[4][0][4]=0;
d[0][1][0]=16*0.151437;
d[1][1][0]=0;
d[2][1][0]=16*-0.0351907;
d[3][1][0]=0;
d[4][1][0]=0;
d[0][1][1]=1.1217;
d[1][1][1]=-1.04823;
d[2][1][1]=1.23836;
d[3][1][1]=-1.1555;
d[4][1][1]=0;
d[0][1][2]=16*0.0897154;
d[1][1][2]=-0.94036;
d[2][1][2]=0.917702;
d[3][1][2]=-0.0845;
d[4][1][2]=0;
d[0][1][3]=16*0.0151437;
d[1][1][3]=0;
d[2][1][3]=16*-0.00351907;
d[3][1][3]=0;
d[4][1][3]=0;
d[0][1][4]=16*-0.0454312;
d[1][1][4]=0;
d[2][1][4]=16*0.0105572;
d[3][1][4]=0;
d[4][1][4]=0;
d[0][2][0]=16*0.0605749;
d[1][2][0]=0;
d[2][2][0]=16*-0.0140763;
d[3][2][0]=0;
d[4][2][0]=0;
d[0][2][1]=9.98075;
d[1][2][1]=-1.97594;
d[2][2][1]=5.11001;
d[3][2][1]=-0.419;
d[4][2][1]=-6;
d[0][2][2]=7.48015;
d[1][2][2]=1.63002;
d[2][2][2]=3.39716;
d[3][2][2]=-1.277;
d[4][2][2]=-8;
d[0][2][3]=16*-0.575461;
d[1][2][3]=0;
d[2][2][3]=16*0.133725;
d[3][2][3]=0;
d[4][2][3]=0;
d[0][2][4]=16*0.272587;
d[1][2][4]=0;
d[2][2][4]=16*-0.0633433;
d[3][2][4]=0;
d[4][2][4]=0;
d[0][3][0]=16*0.2423;
d[1][3][0]=0;
d[2][3][0]=-1.26228;
d[3][3][0]=2;
d[4][3][0]=0;
d[0][3][1]=16*-0.302874;
d[1][3][1]=0;
d[2][3][1]=16*0.0703815;
d[3][3][1]=0;
d[4][3][1]=0;
d[0][3][2]=16*-0.484599;
d[1][3][2]=0;
d[2][3][2]=16*0.11261;
d[3][3][2]=0;
d[4][3][2]=0;
d[0][3][3]=9.28085;
d[1][3][3]=1.45051;
d[2][3][3]=6.25515;
d[3][3][3]=-1.3985;
d[4][3][3]=-11;
d[0][3][4]=-9.22883;
d[1][3][4]=2.30366;
d[2][3][4]=-0.537744;
d[3][3][4]=-0.393833;
d[4][3][4]=0;
d[0][4][0]=16*0.2423;
d[1][4][0]=0;
d[2][4][0]=-1.26228;
d[3][4][0]=2;
d[4][4][0]=0;
d[0][4][1]=16*-0.0605749;
d[1][4][1]=0;
d[2][4][1]=16*0.0140763;
d[3][4][1]=0;
d[4][4][1]=0;
d[0][4][2]=0;
d[1][4][2]=0;
d[2][4][2]=0;
d[3][4][2]=0;
d[4][4][2]=0;
d[0][4][3]=-1.66329;
d[1][4][3]=1.36305;
d[2][4][3]=0.300486;
d[3][4][3]=-0.158278;
d[4][4][3]=-(5./3);
d[0][4][4]=-3.93665;
d[1][4][4]=0.010451;
d[2][4][4]=3.49798;
d[3][4][4]=-1.52606;
d[4][4][4]=-(1./3);
}
}
}
}
